<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>nrf51/Board/nrf6310/ram_retention_example/main.c Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css" />
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="alias.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="alias.js"></script>

<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>


<script type="text/javascript">
  jQuery(document).ready(function () {
    if(gref){ // Number all _img and _table classes
      gref();
    }
  });
</script>

</head>
<body>
<div id="top"><!-- do not remove this div! -->

<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">nRF51 General Code Examples
   
   </div>
   
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.5 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
</div>
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
  initNavTree('nrf6310_2ram__retention__example_2main_8c.html','');
</script>
<div id="doc-content">
<div class="header">
  <div class="headertitle">
<div class="title">nrf51/Board/nrf6310/ram_retention_example/main.c</div>  </div>
</div>
<div class="contents">
<a href="nrf6310_2ram__retention__example_2main_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* Copyright (c) 2009 Nordic Semiconductor. All Rights Reserved.</span>
<a name="l00002"></a>00002 <span class="comment"> *</span>
<a name="l00003"></a>00003 <span class="comment"> * The information contained herein is confidential property of Nordic</span>
<a name="l00004"></a>00004 <span class="comment"> * Semiconductor ASA.Terms and conditions of usage are described in detail</span>
<a name="l00005"></a>00005 <span class="comment"> * in NORDIC SEMICONDUCTOR STANDARD SOFTWARE LICENSE AGREEMENT.</span>
<a name="l00006"></a>00006 <span class="comment"> *</span>
<a name="l00007"></a>00007 <span class="comment"> * Licensees are granted free, non-transferable use of the information. NO</span>
<a name="l00008"></a>00008 <span class="comment"> * WARRANTY of ANY KIND is provided. This heading must NOT be removed from</span>
<a name="l00009"></a>00009 <span class="comment"> * the file.</span>
<a name="l00010"></a>00010 <span class="comment"> */</span>
<a name="l00011"></a>00011 
<a name="l00066"></a>00066 <span class="preprocessor">#include &lt;stdbool.h&gt;</span>
<a name="l00067"></a>00067 <span class="preprocessor">#include &lt;stdint.h&gt;</span>
<a name="l00068"></a>00068 <span class="preprocessor">#include &quot;nrf_delay.h&quot;</span>
<a name="l00069"></a>00069 <span class="preprocessor">#include &quot;nrf_gpio.h&quot;</span>
<a name="l00070"></a>00070 
<a name="l00071"></a><a class="code" href="group__ram__retention__example.html#gab2d174d89891ae8797f68acc52dce9da">00071</a> <span class="preprocessor">#define RAM_MEMORY_TEST_ADDRESS     (0x20002000UL)        //!&lt; Address in RAM where test word (RAM_MEMORY_TEST_WORD) is written before system off and checked after system reset</span>
<a name="l00072"></a><a class="code" href="group__ram__retention__example.html#gaf8685571f82474ca3aea205c93e473f8">00072</a> <span class="preprocessor"></span><span class="preprocessor">#define RAM_MEMORY_TEST_WORD        (0xFEEDBEEFUL)        //!&lt; Test word that is written to RAM address RAM_MEMORY_TEST_ADDRESS</span>
<a name="l00073"></a><a class="code" href="group__ram__retention__example.html#ga1cbcc1d0486e15cf95ac9a5ba38a842b">00073</a> <span class="preprocessor"></span><span class="preprocessor">#define RESET_MEMORY_TEST_BYTE      (0x0DUL)              //!&lt; known sequence written to special register to check if this wake up from system off.</span>
<a name="l00074"></a><a class="code" href="group__ram__retention__example.html#ga4abe38ee95ef2f09955110c9ce7d4f60">00074</a> <span class="preprocessor"></span><span class="preprocessor">#define MAX_TEST_ITERATIONS         (2)                   //!&lt; maximum numer of iterations this example will run</span>
<a name="l00075"></a><a class="code" href="group__ram__retention__example.html#gaaba028eb05f9da9fcfcc717b5aa2a555">00075</a> <span class="preprocessor"></span><span class="preprocessor">#define SUCCESS_OUTPUT_VALUE        (0xAB)                //!&lt; If ram retention is tested MAX_TEST_ITERATIONS, this value will be given as output which can be used by tester</span>
<a name="l00076"></a><a class="code" href="group__ram__retention__example.html#ga19f626ae969d6e28722062a4ea2580b6">00076</a> <span class="preprocessor"></span><span class="preprocessor">#define PIN_GPIO_WAKEUP             (7)                   //!&lt; Gpio pin configured to wakeup system from system off on falling edge. Can be connected to a button which is high when not pressed</span>
<a name="l00077"></a>00077 <span class="preprocessor"></span>
<a name="l00078"></a>00078 <span class="comment">/*</span>
<a name="l00079"></a>00079 <span class="comment"> * Output in HardFault_Handler in case something went wrong</span>
<a name="l00080"></a>00080 <span class="comment"> * or system off did not work and we reached the end of the program</span>
<a name="l00081"></a>00081 <span class="comment"> */</span>
<a name="l00082"></a>00082 <span class="keywordtype">void</span> HardFault_Handler()
<a name="l00083"></a>00083 {
<a name="l00084"></a>00084   NRF_GPIO-&gt;OUT = 0;
<a name="l00085"></a>00085 
<a name="l00086"></a>00086   <span class="keywordflow">while</span>(<span class="keyword">true</span>)
<a name="l00087"></a>00087   {
<a name="l00088"></a>00088     NRF_GPIO-&gt;OUT ^= (1UL &lt;&lt; 8);
<a name="l00089"></a>00089     nrf_delay_ms(100);
<a name="l00090"></a>00090   }
<a name="l00091"></a>00091 }
<a name="l00092"></a>00092 <span class="comment">/*</span>
<a name="l00093"></a>00093 <span class="comment"> *  Configures pin 8-16 as outputs and pin 7 as input with wake up capabilies from system off.</span>
<a name="l00094"></a>00094 <span class="comment"> */</span>
<a name="l00095"></a>00095 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="group__n_r_f6350__radio__configuration__example.html#gad95401509856e96fc017818483e7fe29">gpio_config</a>(<span class="keywordtype">void</span>)
<a name="l00096"></a>00096 {
<a name="l00097"></a>00097   <span class="comment">// Set Port 1 as output</span>
<a name="l00098"></a>00098   <a class="code" href="group__nrf__gpio.html#ga08c820bf0360c7406b64ddaf3bfc7222" title="Configure GPIO pin range as outputs with normal drive strength. This function can be used to configur...">nrf_gpio_range_cfg_output</a>(8, 15);
<a name="l00099"></a>00099 
<a name="l00100"></a>00100   <span class="comment">// This pin is used for waking up from system off and is active low, so enable sense capabilities</span>
<a name="l00101"></a>00101   <a class="code" href="group__nrf__gpio.html#ga4e63d442ebd572126be3e030b3df4dc6" title="Configure given GPIO pin number as input with given initial value set, hiding inner details...">nrf_gpio_cfg_input</a>(<a class="code" href="group__ram__retention__example.html#ga19f626ae969d6e28722062a4ea2580b6" title="Gpio pin configured to wakeup system from system off on falling edge. Can be connected to a button wh...">PIN_GPIO_WAKEUP</a>, <a class="code" href="group__nrf__gpio.html#gga07e0c8c0b30499cf0a7b79dbe62d3fccad60f768c699495d9976a45fa7a9f51c6" title="Pin pullup resistor enabled.">NRF_GPIO_PIN_PULLUP</a>);
<a name="l00102"></a>00102   NRF_GPIO-&gt;PIN_CNF[<a class="code" href="group__ram__retention__example.html#ga19f626ae969d6e28722062a4ea2580b6" title="Gpio pin configured to wakeup system from system off on falling edge. Can be connected to a button wh...">PIN_GPIO_WAKEUP</a>] |= (GPIO_PIN_CNF_SENSE_Low &lt;&lt; GPIO_PIN_CNF_SENSE_Pos);
<a name="l00103"></a>00103 }
<a name="l00104"></a>00104 
<a name="l00105"></a>00105 <span class="comment">/*</span>
<a name="l00106"></a>00106 <span class="comment"> * Sets all the output pins to show failure and loop forever</span>
<a name="l00107"></a>00107 <span class="comment"> */</span>
<a name="l00108"></a>00108 <span class="keyword">static</span> <span class="keywordtype">void</span> display_failure(<span class="keywordtype">void</span>)
<a name="l00109"></a>00109 {
<a name="l00110"></a>00110   <a class="code" href="group__nrf__gpio.html#gac1d4940bc5ad4aad4f6363c7021b08ae" title="Write GPIO port.">nrf_gpio_port_write</a>(<a class="code" href="group__nrf__gpio.html#ggaa1a5c145e334817f2d960317d64fcb3da9209d7820d65eb58c7804e676581bf40" title="Port 1 (GPIO pin 8-15)">NRF_GPIO_PORT_SELECT_PORT1</a>, 0XFF);
<a name="l00111"></a>00111 
<a name="l00112"></a>00112   <span class="comment">// loop forever</span>
<a name="l00113"></a>00113   <span class="keywordflow">while</span>(<span class="keyword">true</span>)
<a name="l00114"></a>00114   {
<a name="l00115"></a>00115   }
<a name="l00116"></a>00116 }
<a name="l00117"></a>00117 
<a name="l00122"></a><a class="code" href="group__ram__retention__example.html#ga840291bc02cba5474a4cb46a9b9566fe">00122</a> <span class="keywordtype">int</span> <a class="code" href="group__gpio__example.html#ga840291bc02cba5474a4cb46a9b9566fe">main</a>(<span class="keywordtype">void</span>)
<a name="l00123"></a>00123 {
<a name="l00124"></a>00124   uint32_t *p_ram_test = (uint32_t *)<a class="code" href="group__ram__retention__example.html#gab2d174d89891ae8797f68acc52dce9da" title="Address in RAM where test word (RAM_MEMORY_TEST_WORD) is written before system off and checked after ...">RAM_MEMORY_TEST_ADDRESS</a>;
<a name="l00125"></a>00125   uint8_t loop_count = 0;
<a name="l00126"></a>00126 
<a name="l00127"></a>00127   <span class="comment">// Configure pins 8-15 as outputs, and pin 7 as input (input with sense capabilities that can wake</span>
<a name="l00128"></a>00128   <span class="comment">// up the system from OFF mode)</span>
<a name="l00129"></a>00129   <a class="code" href="group__n_r_f6350__radio__configuration__example.html#gad95401509856e96fc017818483e7fe29">gpio_config</a>();
<a name="l00130"></a>00130 
<a name="l00131"></a>00131   <span class="comment">// This delay is needed because the debugger (and only needed if using any debugger) might reset the</span>
<a name="l00132"></a>00132   <span class="comment">// system multiple times when flashing in which case GPREGRET register is programmed incorrectly in</span>
<a name="l00133"></a>00133   <span class="comment">// between two resets and when the flashing is finished then this example will assume that the system</span>
<a name="l00134"></a>00134   <span class="comment">// woke up from system off (bad GPREGRET content) and returns error when it does not find the test byte</span>
<a name="l00135"></a>00135   <span class="comment">// in RAM. This delay will give enough time for multiple resets by the debugger and still not programming</span>
<a name="l00136"></a>00136   <span class="comment">// GPREGRET until flashing is finished. Delay time might change with debugger</span>
<a name="l00137"></a>00137   nrf_delay_ms(100);
<a name="l00138"></a>00138 
<a name="l00139"></a>00139   
<a name="l00140"></a>00140   <span class="comment">// Check if we just woke up from SYSTEM OFF mode by checking NRF_POWER-&gt;GPREGRET register which has</span>
<a name="l00141"></a>00141   <span class="comment">// retained value which was written before going to system off below is the layout for usage for</span>
<a name="l00142"></a>00142   <span class="comment">// NRF_POWER-&gt;GPREGRET register.</span>
<a name="l00143"></a>00143   <span class="comment">//  BITS |   7   |   6   |   5   |   4   |   3   |   2   |   1   |   0</span>
<a name="l00144"></a>00144   <span class="comment">//  --------------------------------------------------------------------</span>
<a name="l00145"></a>00145   <span class="comment">//       |        SPECIAL_SEQUENCE       |          LOOP_COUNT</span>
<a name="l00146"></a>00146   <span class="comment">//  --------------------------------------------------------------------</span>
<a name="l00148"></a>00148 <span class="comment"></span>  <span class="keywordflow">if</span> ((NRF_POWER-&gt;GPREGRET &gt;&gt; 4) == <a class="code" href="group__ram__retention__example.html#ga1cbcc1d0486e15cf95ac9a5ba38a842b" title="known sequence written to special register to check if this wake up from system off.">RESET_MEMORY_TEST_BYTE</a>)
<a name="l00149"></a>00149   {
<a name="l00150"></a>00150     <span class="comment">// Take the loop_count value</span>
<a name="l00151"></a>00151     loop_count = (uint8_t)(NRF_POWER-&gt;GPREGRET &amp; 0xFUL);
<a name="l00152"></a>00152     NRF_POWER-&gt;GPREGRET = 0;
<a name="l00153"></a>00153 
<a name="l00154"></a>00154     <span class="keywordflow">if</span>(loop_count &gt;= (uint8_t)<a class="code" href="group__ram__retention__example.html#ga4abe38ee95ef2f09955110c9ce7d4f60" title="maximum numer of iterations this example will run">MAX_TEST_ITERATIONS</a>)
<a name="l00155"></a>00155     {
<a name="l00156"></a>00156       <a class="code" href="group__nrf__gpio.html#gac1d4940bc5ad4aad4f6363c7021b08ae" title="Write GPIO port.">nrf_gpio_port_write</a>(<a class="code" href="group__nrf__gpio.html#ggaa1a5c145e334817f2d960317d64fcb3da9209d7820d65eb58c7804e676581bf40" title="Port 1 (GPIO pin 8-15)">NRF_GPIO_PORT_SELECT_PORT1</a>, <a class="code" href="group__ram__retention__example.html#gaaba028eb05f9da9fcfcc717b5aa2a555" title="If ram retention is tested MAX_TEST_ITERATIONS, this value will be given as output which can be used ...">SUCCESS_OUTPUT_VALUE</a>);
<a name="l00157"></a>00157       <span class="keywordflow">while</span>(<span class="keyword">true</span>)
<a name="l00158"></a>00158       {
<a name="l00159"></a>00159       }
<a name="l00160"></a>00160     }
<a name="l00161"></a>00161 
<a name="l00162"></a>00162     <span class="keywordflow">if</span>(*p_ram_test != <a class="code" href="group__ram__retention__example.html#gaf8685571f82474ca3aea205c93e473f8" title="Test word that is written to RAM address RAM_MEMORY_TEST_ADDRESS.">RAM_MEMORY_TEST_WORD</a> )
<a name="l00163"></a>00163     {
<a name="l00164"></a>00164       display_failure();
<a name="l00165"></a>00165     }
<a name="l00166"></a>00166     <span class="keywordflow">else</span>
<a name="l00167"></a>00167     {
<a name="l00168"></a>00168       <span class="comment">// Note that this loop is just to display that we have verified ram retention after waking</span>
<a name="l00169"></a>00169       <span class="comment">// up from system off, not needed in real application</span>
<a name="l00170"></a>00170       <span class="keywordflow">for</span>(uint32_t i = 8; i &gt; 0; i--)
<a name="l00171"></a>00171       {
<a name="l00172"></a>00172         <a class="code" href="group__nrf__gpio.html#gac1d4940bc5ad4aad4f6363c7021b08ae" title="Write GPIO port.">nrf_gpio_port_write</a>(<a class="code" href="group__nrf__gpio.html#ggaa1a5c145e334817f2d960317d64fcb3da9209d7820d65eb58c7804e676581bf40" title="Port 1 (GPIO pin 8-15)">NRF_GPIO_PORT_SELECT_PORT1</a>, (uint8_t)(0X01 &lt;&lt; i));
<a name="l00173"></a>00173         nrf_delay_ms(50);
<a name="l00174"></a>00174       }
<a name="l00175"></a>00175     }
<a name="l00176"></a>00176     *p_ram_test = 0;
<a name="l00177"></a>00177   }
<a name="l00178"></a>00178 
<a name="l00179"></a>00179   <span class="comment">// Write known sequence + loop_count to GPREGRET register</span>
<a name="l00180"></a>00180   loop_count++;
<a name="l00181"></a>00181   NRF_POWER-&gt;GPREGRET = ( (<a class="code" href="group__ram__retention__example.html#ga1cbcc1d0486e15cf95ac9a5ba38a842b" title="known sequence written to special register to check if this wake up from system off.">RESET_MEMORY_TEST_BYTE</a> &lt;&lt; 4) | loop_count );
<a name="l00182"></a>00182 
<a name="l00183"></a>00183   <span class="comment">// Write known value to known address in ram, enable ram retention and set system off and wait</span>
<a name="l00184"></a>00184   <span class="comment">// for gpio wakeup from external device</span>
<a name="l00185"></a>00185   <span class="comment">// Light up LED telling that we are preparing for system off with ram retention enabled</span>
<a name="l00186"></a>00186   <span class="comment">// Note that this loop is just to display that we are preparing for system off, not needed in real</span>
<a name="l00187"></a>00187   <span class="comment">// application</span>
<a name="l00188"></a>00188   <span class="keywordflow">for</span>(uint8_t i = 0; i &lt; 8; i++)
<a name="l00189"></a>00189   {
<a name="l00190"></a>00190     <a class="code" href="group__nrf__gpio.html#gac1d4940bc5ad4aad4f6363c7021b08ae" title="Write GPIO port.">nrf_gpio_port_write</a>(<a class="code" href="group__nrf__gpio.html#ggaa1a5c145e334817f2d960317d64fcb3da9209d7820d65eb58c7804e676581bf40" title="Port 1 (GPIO pin 8-15)">NRF_GPIO_PORT_SELECT_PORT1</a>, (uint8_t)(0X01 &lt;&lt; i));
<a name="l00191"></a>00191     nrf_delay_ms(50);
<a name="l00192"></a>00192   }
<a name="l00193"></a>00193 
<a name="l00194"></a>00194   <span class="comment">// Switch ON both RAM banks when in system OFF mode</span>
<a name="l00195"></a>00195   NRF_POWER-&gt;RAMON |= (POWER_RAMON_OFFRAM0_RAM0On &lt;&lt; POWER_RAMON_OFFRAM0_Pos) |
<a name="l00196"></a>00196           (POWER_RAMON_OFFRAM1_RAM1On &lt;&lt; POWER_RAMON_OFFRAM1_Pos);
<a name="l00197"></a>00197 
<a name="l00198"></a>00198   <span class="comment">// Write test word to RAM memory</span>
<a name="l00199"></a>00199   *p_ram_test = <a class="code" href="group__ram__retention__example.html#gaf8685571f82474ca3aea205c93e473f8" title="Test word that is written to RAM address RAM_MEMORY_TEST_ADDRESS.">RAM_MEMORY_TEST_WORD</a>;
<a name="l00200"></a>00200 
<a name="l00201"></a>00201   <span class="comment">// Enter system off and wait for wake up from gpio detect signal</span>
<a name="l00202"></a>00202   NRF_POWER-&gt;SYSTEMOFF = 0x1;
<a name="l00203"></a>00203 
<a name="l00204"></a>00204   <span class="comment">// Will reach here only if system off did not work and hence will lead to a hard-fault which will </span>
<a name="l00205"></a>00205   <span class="comment">// be handled in HardFault_Handler(). If wake up condition is already active while system off is triggered,</span>
<a name="l00206"></a>00206   <span class="comment">// then the system will go to system off and wakes up immediately with a system reset.</span>
<a name="l00207"></a>00207 }
<a name="l00208"></a>00208 
</pre></div></div>
</div>
  <div id="nav-path" class="navpath">
    <ul>
      <li class="navelem"><a class="el" href="nrf6310_2ram__retention__example_2main_8c.html">main.c</a>      </li>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Defines</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>


    <li class="footer">
      Copyright &copy 2006-2011 <a href="http://www.nordicsemi.no" style="text-decoration:none">Nordic Semiconductor</a>.
      All Rights Reserved.
      <a href="disclaimer.html">Disclaimer</a>
    </li>
   </ul>
 </div>


</body>
</html>
